[Prof ~] Sistema de Herói (Guardião) Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Prof ~] Sistema de Herói (Guardião)

5 participantes

Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty [Prof ~] Sistema de Herói (Guardião)

Mensagem por Profane ~ Seg Mar 02, 2015 9:47 pm

Olá Coleguinhas da Aldeia. 

Venho trazer um sistema pedido, creio que muitos que tem uma certa noção de Vb desenvolveriam de outras formas, mas estou disponibilizando a minha maneira.

Vamos lá =P

#### O que este sistema faz?
Ao um Player Normal matar um Player que está sendo considerado PK (Player Killer), ele será considerado um Player Hero.

Estarei adicionando no final uma condição para que: Caso o Player Hero assassine um Player Normal, ele seja morto pelo sistema. Além de que, outra condição para que caso o Player seja Hero, ele não poder ser atacado por Player Normais e nem outros Heros.

#### O que será necessário? 

 - Visual Basic
 - E acesso ao source de sua engine =P


Server Side

01 - ModPlayer

Procure por :

Código:
Sub SetPlayerPK(ByVal index As Long, ByVal PK As Long)
    Player(index).PK = PK
End Sub

Abaixo deste End Sub adicione:

Código:
Function GetPlayerGuardian(ByVal index As Long) As Long

    If index < 1 Or index > MAX_PLAYERS Then Exit Function
    GetPlayerGuardian = Player(index).Guardian
End Function

Sub SetPlayerGuardian(ByVal index As Long, ByVal Guardian As Long)
    Player(index).Guardian = Guardian
End Sub

02 - ModPlayer

Procure por:

Código:
Sub OnDeath(ByVal index As Long)

No final desta Sub, antes do End Sub adicione:

Código:
  'Caso o jogador que morra seja um Guardian - Retirar o Guardian do mesmo.
        If GetPlayerGuardian(index) = YES Then
            Call SetPlayerGuardian(index, NO)
            Call SendPlayerData(index)
        End If

03 - ModCombat

Procure pela por essa Função:

Código:
Function CanPlayerAttackPlayer

No final dela, antes do End Function adicione :

   'Player Normal não atacar um Guardião
   If GetPlayerPK(attacker) = NO And GetPlayerGuardian(victim) Then
       Call PlayerMsg(attacker, "Você não pode ferir um Guardian", BrightRed)
       Exit Function
   End If


OBS -> Apenas adicione isto se desejar que Player's Normais não consigam ferir um Guardian(Hero) ou o que for chamar esse "Status".

03 -ModCombat

Procure por esta Sub:

Código:
Sub PlayerAttackPlayer

Nesta sub procure por isso :
Código:
   If GetPlayerPK(victim) = NO Then
            If GetPlayerPK(attacker) = NO Then
                Call SetPlayerPK(attacker, YES)
                Call SendPlayerData(attacker)
                Call GlobalMsg(GetPlayerName(attacker) & " has been deemed a Player Killer!!!", BrightRed)
            End If

        Else
            Call GlobalMsg(GetPlayerName(victim) & " has paid the price for being a Player Killer!!!", BrightRed)
        End If

Substitua esta parte por :

Código:

        If GetPlayerPK(victim) = NO Then
            If GetPlayerPK(attacker) = NO Then
                Call SetPlayerPK(attacker, YES)
                Call SendPlayerData(attacker)
                Call GlobalMsg(GetPlayerName(attacker) & " quebrou a conduta dos Players, Agora é um Player Killer [ PK ]. Precisa ser Purificado.", BrightRed)
            End If
            Else
            Call GlobalMsg(GetPlayerName(victim) & " pagou o preço por ser um Player Killer!", BrightRed)
            If GetPlayerPK(victim) = YES Then
                Call SetPlayerGuardian(attacker, YES)
                Call GlobalMsg(GetPlayerName(attacker) & " se tornou um Player Guardian!", BrightBlue)
            End If
            End If
            
        If GetPlayerGuardian(attacker) = YES And GetPlayerPK(victim) = NO Then
                Call SetPlayerPK(attacker, YES)
                Call SetPlayerGuardian(attacker, NO)
                Call GlobalMsg("[Guardian]" & GetPlayerName(attacker) & " corrompeu-se assassinando um Player Verde.Foi declarado um Traidor e eliminado pelo Sistema.", BrightRed)
                Call OnDeath(attacker)
            End If
            
        If GetPlayerGuardian(attacker) = YES And GetPlayerPK(victim) = YES Then
            Call GlobalMsg("[Guardian]" & GetPlayerName(attacker) & " mandou para a Cadeia o [PK]" & GetPlayerName(victim), BrightBlue)
        End If
        
        If GetPlayerPK(attacker) = YES And GetPlayerGuardian(victim) = YES Then
            Call GlobalMsg("[PK]" & GetPlayerName(attacker) & " assassinou o [Guardian]" & GetPlayerName(victim), BrightRed)
        End If
        
        If GetPlayerPK(attacker) = YES And GetPlayerPK(victim) = NO Then
            Call GlobalMsg("[PK]" & GetPlayerName(attacker) & " assassinou " & GetPlayerName(victim), BrightRed)
        End If
        
        Call OnDeath(victim)

Seja capaz de editar as Calls de Msg, coloque baseado em seu jogo; As minhas são decorrentes ao tema do meu Jogo.


04 - ModServerTCP

Procure por isso:
Código:
    buffer.WriteLong GetPlayerPK(index)

Abaixou adicione:

Código:
    buffer.WriteLong GetPlayerGuardian(index)

No mesmo ModServerTcp e.e Procure por:

Código:
    buffer.WriteLong GetPlayerPK(index)

(Sim é a mesma coisa, porém são para troca de msgs...) Apenas adicione:

Código:
    buffer.WriteLong GetPlayerGuardian(index)

Agora no Sub SayMsg_Global abaixo do:

Código:
    buffer.WriteLong GetPlayerPK(index)

Adicione:
Código:
    buffer.WriteLong GetPlayerGuardian(index)


05 - ModTypes

Procure por:
Código:
Private Type PlayerRec

Nesta Private procure por :

Código:
    PK As Byte

Abaixo adicione:

Código:
    Guardian As Byte


Uff ~ Server Pronto. Hora do Cliente.

Client Side ~

01 - ModHandleData

Procure por:
Código:
    Call SetPlayerPK(I, buffer.ReadLong)

Abaixo adicione:

Código:
    Call SetPlayerGuardian(I, buffer.ReadLong)

Procure pro isso:

Código:
Private Sub HandleSayMsg

Nesta Sub localize:
Código:
Dim PK As Long

Abaixo dela coloque:

Código:
Dim Guardian As Long

Na mesma Sub procure por:

Código:
    PK = buffer.ReadLong

Abaixo adicione:

Código:
    Guardian = buffer.ReadLong

Na mesma sub procure isso:

Código:
   ' Check access level
    If PK = NO Then
        Select Case Access
            Case 0
                colour = White
            Case 1
                colour = DarkGrey
            Case 2
                colour = Cyan
            Case 3
                colour = BrightGreen
            Case 4
                colour = Yellow
        End Select
    Else
        colour = BrightRed
 
abaixo adicione:

Código:
 If Guardian = YES Then
                colour = Blue
        End If
    End If


02 - ModText


Procure por esta Sub:

Código:
Public Sub DrawPlayerName


Procure por:
Código:
If GetPlayerPK(Index) = NO Then

Acima disso adicione:

Código:
  If GetPlayerGuardian(Index) = YES Then
            Color = BrightBlue
            
            Else
            Color = BrightRed

Lembre-se que no final do Select Case;  possível que tenha que add um End If =P 

03 - ModTypes


Procure por:

Código:
Private Type PlayerRec


Nesta Private abaixo do :

Código:
    PK As Byte

Abaixo adicione:

Código:
    Guardian As Byte


04 - ModDatabase

Procure por esta Sub:

Código:
Sub SetPlayerPK

Nesta sub procure por o End Sub =P E adicione isso: 

Código:
Function GetPlayerGuardian(ByVal Index As Long) As Long
    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo ErrorHandler

    If Index > MAX_PLAYERS Then Exit Function
    GetPlayerGuardian = Player(Index).Guardian
    
    ' Error handler
    Exit Function
ErrorHandler:
    HandleError "GetPlayerGuardian", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Function
End Function

Sub SetPlayerGuardian(ByVal Index As Long, ByVal Guardian As Long)
    ' If debug mode, handle error then exit out
    If Options.Debug = 1 Then On Error GoTo ErrorHandler

    If Index > MAX_PLAYERS Then Exit Sub
    Player(Index).Guardian = Guardian
    
    ' Error handler
    Exit Sub
ErrorHandler:
    HandleError "SetPlayerGuardian", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
    Err.Clear
    Exit Sub
End Sub



Finalmente uff... Bom se você colocou tudo certinho, nos devidos locais, irá ocorrer tudo ok. 

Lembre-se de dar make em um Backup, e outra coisa:

-> Necessário deletar todas as Contas de jogadores.




Não precisa dar Crédito porque Crédito não diz que você é capaz ou um bom membro. 

Desenvolvido por mim. Na verdade qualquer um poderia desenvolver, é uma coisa básica, apenas adicionar uma variação de PK. '-' Mas está ai com condições feitas por mim, e desenvolvidas por mim. 

Estou a disposição para dar Support e Ajudar em modificações. Basta postar aqui ou Mandar PM. Até mesmo ajuda em outros sistemas. 

ATT ~
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Dooolly Seg Mar 02, 2015 10:42 pm

Muito bom profane, está muito bom...
mas eu tenho uma dica, pq não utiliza a variável PK que já existe na estrutura do player, em vez de criar uma com o nome guardian, é só por o valor dela assim (PK = 0 : Player Normal, PK = 1 : Assassino, PK = 3 : Herói) acho que ficaria melhor, mas a sua maneira está muito boa, eu faria assim tb, hj não pois busco uma maneira que fique mais leve, mas como dica eu aconselho você procurar reutilizar oque já existe na engine..

+1 Credito, Muitos irão usá-lo tenho certeza, continue assim.
Dooolly
Dooolly
Colaborador
Colaborador

Medalhas : [Prof ~] Sistema de Herói (Guardião) Trophy12
Mensagens : 1227
Créditos : 153

Ficha do personagem
Nível: 1
Experiência:
[Prof ~] Sistema de Herói (Guardião) Left_bar_bleue0/0[Prof ~] Sistema de Herói (Guardião) Empty_bar_bleue  (0/0)
Vida:
[Prof ~] Sistema de Herói (Guardião) Left_bar_bleue30/30[Prof ~] Sistema de Herói (Guardião) Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Profane ~ Seg Mar 02, 2015 10:49 pm

Vlw Dooodly, estou a disposição =P Programo mais em Forum's de outras linguas, mas é sempre bom ajudar nossos pequenos Br's <3

Att - Reforçando, qualquer falha em compilação, postem que podemos ajudar. =P

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Motodark Ter Mar 03, 2015 4:21 pm

Profane muito bom, mas estou com outro problema quando o serve atualiza a cor do player some, e queria também como colocar cores no decorrer de kill um Guardian mata 300 PK a cor do nick muda para Branco. peço ajuda nessas duas perguntas obrigado +1 cred
Motodark
Motodark
Ocasional
Ocasional

Mensagens : 169
Créditos : 5

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Pablo Kawan Qua Mar 04, 2015 7:35 pm

parece o antigo sistema de pk da minha ex-engine, só que o meu era mais complexo rs

_________________
Assinatura removida pela Staff
^ Tenho nova, surprise
[Prof ~] Sistema de Herói (Guardião) H2D9a9k
Pablo Kawan
Pablo Kawan
Experiente
Experiente

Mensagens : 480
Créditos : 158

http://tavernarpg.esy.es/

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por lucastobias Dom maio 27, 2018 9:33 am

Uma duvida sera que tem algum tutorial com mesmo sistema mas tipo vc desativa tipo ativa modo PK Desativar Modo PK quando vc ta com PK ativo qual que play pode te mata Tipo parecido com tibia ? sera que tem esse sistema ?
lucastobias
lucastobias
Semi-Experiente
Semi-Experiente

Mensagens : 80
Créditos : 3

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Profane ~ Dom maio 27, 2018 11:49 am

lucastobias escreveu:Uma duvida sera que tem algum tutorial com mesmo sistema mas tipo vc desativa tipo ativa modo PK Desativar Modo PK quando vc ta com PK ativo qual que play pode te mata Tipo parecido com tibia ? sera que tem esse sistema ?

PK em si é um estado de marcação. Alguém marcado como "pk" , está assim por ter assassinado alguém, agido de forma hostil ou outro..


O que você está querendo é uma Condição para se Ativar e Desativar PvP.

Não é difícil de se fazer, posso ver um tempo livre hoje e tentar disponibilizar. (Mas não é certeza >< )

_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~
Profane ~
Colaborador
Colaborador

Mensagens : 818
Créditos : 130

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por lucastobias Seg maio 28, 2018 6:35 pm

Profane ~ escreveu:
lucastobias escreveu:Uma duvida sera que tem algum tutorial com mesmo sistema mas tipo vc desativa tipo ativa modo PK Desativar Modo PK quando vc ta com PK ativo qual que play pode te mata Tipo parecido com tibia ? sera que tem esse sistema ?

PK em si é um estado de marcação. Alguém marcado como "pk" , está assim por ter assassinado alguém, agido de forma hostil ou outro..


O que você está querendo é uma Condição para se Ativar e Desativar PvP.

Não é difícil de se fazer, posso ver um tempo livre hoje e tentar disponibilizar. (Mas não é certeza >< )
Ta quando puder fazer agradeço Successful
lucastobias
lucastobias
Semi-Experiente
Semi-Experiente

Mensagens : 80
Créditos : 3

Ir para o topo Ir para baixo

[Prof ~] Sistema de Herói (Guardião) Empty Re: [Prof ~] Sistema de Herói (Guardião)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos